#!/bin/bash

# 检查是否为 Debian 或 Ubuntu 系统
if [[ -f /etc/os-release ]]; then
    source /etc/os-release
    if [[ "$ID" == "debian" || "$ID" == "ubuntu" ]]; then
        echo "检测到 Debian 或 Ubuntu 系统，继续执行脚本..."
    else
        echo "该脚本仅适用于 Debian 或 Ubuntu 系统。"
        exit 1
    fi
else
    echo "无法检测操作系统类型，请确保您正在使用 Debian 或 Ubuntu。"
    exit 1
fi

# 更新系统包索引
echo "正在更新系统包索引..."
sudo apt-get update -y

# 安装必要的依赖包
echo "正在安装必要的依赖包..."
sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加 Docker 官方 GPG 密钥
echo "正在添加 Docker 官方 GPG 密钥..."
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 设置 Docker 的稳定版仓库
echo "正在设置 Docker 的稳定版仓库..."
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 再次更新包索引以包含 Docker 仓库
echo "正在更新包索引以包含 Docker 仓库..."
sudo apt-get update -y

# 安装 Docker CE（社区版）
echo "正在安装 Docker CE..."
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# 启动并设置 Docker 服务开机自启
echo "正在启动 Docker 服务..."
sudo systemctl start docker
sudo systemctl enable docker

# 安装 Docker Compose
echo "正在安装 Docker Compose..."
sudo wget https://gitee.com/linpop/docker-install/releases/download/1.0.0/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose
if [ $? -ne 0 ]; then
    echo "下载 Docker Compose 失败，请检查网络连接。"
    exit 1
fi

# 修改其为可执行文件
echo "正在配置 Docker Compose..."
sudo chmod +x /usr/local/bin/docker-compose

# 验证 docker-compose 是否可用
if ! /usr/local/bin/docker-compose --version &> /dev/null; then
    echo "docker-compose 未正确安装，请检查安装步骤。"
    exit 1
fi

# 查看 Docker 和 Docker Compose 版本信息（绿色输出）
echo -e "\e[32m==============================\e[0m"
echo -e "\e[32mDocker 和 Docker Compose 版本信息：\e[0m"

# 提取 Docker 版本号
docker_version_output=$(docker -v 2>/dev/null)
if [[ -z "$docker_version_output" ]]; then
    echo "无法查看 Docker 版本信息，请检查安装是否成功。"
    exit 1
fi
docker_version=$(echo "$docker_version_output" | awk '{print $3}' | cut -d',' -f1)
echo -e "\e[32mDocker版本：${docker_version}\e[0m"

# 提取 Docker Compose 版本号
docker_compose_version_output=$(/usr/local/bin/docker-compose --version 2>/dev/null)
if [[ -z "$docker_compose_version_output" ]]; then
    echo "无法查看 Docker Compose 版本信息，请检查安装是否成功。"
    exit 1
fi
docker_compose_version=$(echo "$docker_compose_version_output" | awk '{print $4}')
echo -e "\e[32mDocker Compose版本：${docker_compose_version}\e[0m"

echo -e "\e[32m==============================\e[0m"
echo -e "\e[32mDocker 和 Docker Compose 安装与配置完成！\e[0m"